#ifndef SCRIPTING_ENGINE_H
#define SCRIPTING_ENGINE_H

#include "config.h"
#include "scripting/scripting_module.h"

#include <string>

/**
 * @brief 获取引擎数量，即支持的脚本语言列表
 * 
 * @param count 返回引擎的数量
 * @return 引擎的信息数组
 */
DIARY_APP_SDK_API
const ScriptModuleInfo **ScriptEngineList(int *count);

/**
 * @brief 初始化脚本引擎 
 */
void ScriptEngineInitialize();

/**
 * @brief 清理脚本引擎
 */
void ScriptEngineShutdown();

/**
 * @brief 获取指定语言的引擎实例，如果不支持此引擎，则返回 NULL
 * 
 * @param lang 脚本的语言
 * @return 对应的脚本引擎信息，如果不支持则为 NULL
 */
DIARY_APP_SDK_API
const ScriptModuleInfo *GetEngine(const char *lang);

/**
 * @brief Create a Script From File
 * 
 * @param path 文件路径
 * @return IScript* 创建的脚本对象，失败则为空（NULL）
 */
DIARY_APP_SDK_API
IScript* CreateScriptFromFile(const std::string &path);

#endif /* SCRIPTING_ENGINE_H */
